﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QuanLyBanHang.DAL;
using QuanLyBanHang.OBJECT;
using System.Text.RegularExpressions;

namespace QuanLyBanHang
{
    public partial class frmEditNhanVien : Form
    {
        private DataGridView dgv = null;
        private frmNhanVien fNhanVien = null;
        public static int Action;

        public frmEditNhanVien(DataGridView _dgv, frmNhanVien _fNhanVien)
        {
            dgv = _dgv;
            fNhanVien = _fNhanVien;
            InitializeComponent();
        }

        private void frmEditNhanVien_Load(object sender, EventArgs e)
        {
            cboGT.SelectedIndex = 0;

            if (Action == 1)
            {
                this.Text = "Thêm nhân viên";
                DataTable dt = DalNhanVien.GetID();
                string MaNCC = dt.Rows[0][0].ToString();
                int so = int.Parse(MaNCC.Substring(2, MaNCC.Length - 2)) + 1;
                txtMa.Text = string.Format("{0:NV000}", so);
            }
            else if (Action == 2)
            {
                this.Text = "Sửa thông tin nhân viên";
                txtMa.Text = dgv.CurrentRow.Cells[0].Value.ToString();
                txtTen.Text = dgv.CurrentRow.Cells[1].Value.ToString();
                cboGT.Text = dgv.CurrentRow.Cells[2].Value.ToString();
                dtpNS.Value = (DateTime)dgv.CurrentRow.Cells[3].Value;
                txtSDT.Text = dgv.CurrentRow.Cells[4].Value.ToString();
                txtCMND.Text = dgv.CurrentRow.Cells[5].Value.ToString();
                txtDiaChi.Text = dgv.CurrentRow.Cells[6].Value.ToString();

                txtTaiKhoan.Text = dgv.CurrentRow.Cells[7].Value.ToString();
                txtMatKhau.Text = dgv.CurrentRow.Cells[8].Value.ToString();
                txtNhapLai.Text = dgv.CurrentRow.Cells[8].Value.ToString();
                txtEmail.Text = dgv.CurrentRow.Cells[9].Value.ToString();
                txtTaiKhoan.ReadOnly = true;
            }
        }

        private string CheckNull()
        {
            object[] obj = { txtTen,cboGT,txtSDT,txtCMND,txtDiaChi,txtTaiKhoan,txtMatKhau,txtNhapLai,txtEmail };
            string error = "";
            foreach (Control item in obj)
            {
                if (item.Text == "")
                    error += "Bạn chưa nhập: " + item.Tag.ToString().ToUpper() + "." + '\n';
            }
            return error;
        }

        private void btnLuu_Click(object sender, EventArgs e)
        {
            if (Action == 1 && CheckAll() && CheckAction1())
            {
                ObjNhanVien nv = new ObjNhanVien(txtMa.Text, txtTen.Text, cboGT.Text, dtpNS.Value, txtSDT.Text, txtCMND.Text, txtDiaChi.Text, true);
                ObjUsers user = new ObjUsers(txtTaiKhoan.Text, txtMatKhau.Text, txtEmail.Text, 2, txtMa.Text);
                int thucthi = DalNhanVien.Insert(nv);
                int thucthi1 = DalUsers.Insert(user);
                if (thucthi > 0 && thucthi1 > 0)
                {
                    MessageBox.Show("Nhân viên: " + txtTen.Text.ToUpper() + " đã được thêm vào CSDL thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    fNhanVien.frmNhanVien_Load(null, null);
                    this.Close();
                }
                else
                {
                    MessageBox.Show("Nhân viên: " + txtTen.Text.ToUpper() + " chưa được thêm vào CSDL", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            else if (Action == 2 && CheckAll())
            {
                ObjNhanVien nv = new ObjNhanVien(txtMa.Text, txtTen.Text, cboGT.Text, dtpNS.Value, txtSDT.Text, txtCMND.Text, txtDiaChi.Text, true);
                ObjUsers user = new ObjUsers(txtTaiKhoan.Text, txtMatKhau.Text, txtEmail.Text, 2, txtMa.Text);
                int thucthi = DalNhanVien.Update(nv);
                int thucthi1 = DalUsers.Update(user);
                if (thucthi > 0 && thucthi1 > 0)
                {
                    MessageBox.Show("Nhân viên: " + txtTen.Text.ToUpper() + " đã được sửa thông tin thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    fNhanVien.frmNhanVien_Load(null, null);
                    this.Close();
                }
                else
                    MessageBox.Show("Nhân viên: " + txtTen.Text.ToUpper() + " chưa được sửa", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

        private bool CheckAll()
        {
            if (!(txtSDT.Text.Length >= 10))
            {
                MessageBox.Show("Số điện thoại phải là 10 hoặc 11 số !!!");
                txtSDT.Focus();
                return false;
            }
            if (txtCMND.Text.Length < 9)
            {
                 MessageBox.Show("Số CMND phải > 9 số !!!");
                 txtCMND.Focus();
                return false;
            }
            if (CheckNull() != "")
            {
                MessageBox.Show(CheckNull(), "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return false;
            }
            else if (txtNhapLai.Text != txtMatKhau.Text)
            {
                MessageBox.Show("Mật khẩu không khớp !!!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtMatKhau.Focus();
                return false;
            }
            else if (txtMatKhau.Text.Trim().Length < 6)
            {
                MessageBox.Show("Mật khẩu phải từ 6 ký tự trở lên !!!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtMatKhau.Focus();
                return false;
            }
            else if (!DataHelper.isValidEmail(txtEmail.Text.Trim()))
            {
                MessageBox.Show("Định dạng Email không đúng !!!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtEmail.Focus();
                return false;
            }
            else
            {
                return true;
            }

        }

        private bool CheckAction1()
        {
            if (!DataHelper.CheckAll(txtTaiKhoan.Text, "TaiKhoan", "Users"))
            {
                MessageBox.Show("Tài khoản này đã có mời bạn nhập tài khoản khác !!!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtTaiKhoan.Focus();
                txtTaiKhoan.Clear();
                return false;
            }
            else if (!DataHelper.CheckAll(txtCMND.Text, "CMND", "NhanVien"))
            {
                MessageBox.Show("Chứng minh thư này đã có người sử dụng !!!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtCMND.Focus();
                txtCMND.Clear();
                return false;
            }
            else if (!DataHelper.CheckAll(txtCMND.Text, "CMND", "NhanVien"))
            {
                MessageBox.Show("Chứng minh thư này đã có người sử dụng !!!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtCMND.Focus();
                txtCMND.Clear();
                return false;
            }
            else if (!DataHelper.CheckAll(txtEmail.Text, "Email", "Users"))
            {
                MessageBox.Show("Email này đã có người sử dụng !!!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtEmail.Focus();
                txtEmail.Clear();
                return false;
            }
            else
            {
                return true;
            }
        }

        private void txtCMND_KeyPress(object sender, KeyPressEventArgs e)
        {
            string ValidChar = "0123456789" + Convert.ToChar(8).ToString();
            if (!ValidChar.Contains(e.KeyChar))
                e.Handled = true;
        }


    }
}
